//获取当前页面参数
export const getOptions = () => {
  return getPage().options;
};

//微信支付
export const wxPay = (orderInfo) => {
  return uni.requestPayment({
    provider: "wxpay",
    orderInfo: orderInfo,
    timeStamp: orderInfo.timestamp,
    nonceStr: orderInfo.noncestr,
    package: orderInfo.package,
    signType: orderInfo.signtype,
    paySign: orderInfo.paysign,
  });
};

//获取页面信息 delta倒数第几个页面
export const getPage = (delta = 0) => {
  let routes = getCurrentPages();

  let index = routes.length - 1 - delta;
  let page = routes[index];
  return page;
};

//是否是网站链接
export const isUrl = (url) => {
  let reg =
    /^(((ht|f)tps?):\/\/)?([^!@#$%^&*?.\s-]([^!@#$%^&*?.\s]{0,63}[^!@#$%^&*?.\s])?\.)+[a-z]{2,6}\/?/;
  return reg.test(url);
};

// 计算距离函数
export const Rad = (d) => {
  return (d * Math.PI) / 180.0;
};
/**
 * 经纬度计算两点的距离
 * @param {当前纬度}} lat1
 * @param {当前经度} lng1
 * @param {目标纬度} lat2
 * @param {目标经度} lng2
 */
export const getDistance = (lat1, lng1, lat2, lng2) => {
  console.log(lat1, lng1, lat2, lng2);
  var radLat1 = Rad(lat1);
  var radLat2 = Rad(lat2);
  var a = radLat1 - radLat2;
  var b = Rad(lng1) - Rad(lng2);
  var s =
    2 *
    Math.asin(
      Math.sqrt(
        Math.pow(Math.sin(a / 2), 2) +
          Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2)
      )
    );
  s = s * 6378.137;
  s = Math.round(s * 10000) / 10000;
  if (s < 1) {
    s = s.toFixed(3) * 1000 + "m"; //保留小数
    console.log("经纬度计算的距离:" + s);
    return s;
  } else {
    s = s.toFixed(1) + "km"; //保留小数
    console.log("经纬度计算的距离:" + s);
    return s;
  }
};

/**
 * 防抖函数
 *
 * 在指定的延迟时间内，若函数被连续调用，则只有最后一次调用会执行。
 *
 * @param func 需要防抖的函数
 * @param delay 延迟时间，单位为毫秒
 * @returns 返回经过防抖处理的函数
 */
export const debounce = (func, delay) => {
  let timer; // 定时器变量
  return function (...args) {
    clearTimeout(timer); // 清除前一次定时器
    timer = setTimeout(() => {
      func.apply(this, args); // 绑定 `this` 并执行回调
    }, delay);
  };
};
